package com.axdoc.baseinfo.service;

import java.util.List;

import com.axdoc.baseinfo.entity.City;
import com.axdoc.baseinfo.entity.Dept;
import com.axdoc.baseinfo.entity.Hospital;
import com.axdoc.baseinfo.entity.Pdept;
import com.axdoc.baseinfo.entity.Title;
import com.axdoc.baseinfo.exceptions.BaseInfoException;
import com.axdoc.common.core.pagination.PageResults;
/**
 * 医院相关基础信息服务
 * @author liyanhui
 *
 */
public interface HospitalInfoService {
	/**
	 * 根据科室id获取科室信息
	 * @param deptId 
	 * @return
	 * @throws BaseInfoException
	 * @throws Exception
	 */
    public Dept getDeptById(String deptId) throws BaseInfoException, Exception;
    /**
     * 根据大科室id获取大科室信息
     * @param pdeptId
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public Pdept getPdeptById(String pdeptId) throws BaseInfoException, Exception;
    /**
     * 根据医院id获取医院信息
     * @param hospitalId
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public Hospital getHospitalById(String hospitalId) throws BaseInfoException, Exception;
    /**
     * 分页查询小科室信息列表
     * @param page
     * @param pageSize
     * @param name
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public PageResults<Dept> findDeptPage(String name ,String page ,String pageSize) throws BaseInfoException, Exception;
    /**
     * 分页查询大科室信息列表
     * @param page
     * @param pageSize
     * @param name
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public PageResults<Pdept> findPdeptPage(String name ,String page ,String pageSize) throws BaseInfoException, Exception;
    /**
     * 根据科室名称获取科室信息，全匹配
     * @param name
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public Dept getDeptByName(String name) throws BaseInfoException, Exception;
    /**
     * 根据大科室名称获取大科室信息，全匹配
     * @param name
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public Pdept getPdeptByName(String name) throws BaseInfoException, Exception;
    /**
     * 根据条件分页查询医院列表信息
     * @param name
     * @param cityName
     * @param level
     * @param category
     * @param major
     * @param page
     * @param pageSize
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public PageResults<Hospital> findHospitalPage(String name ,String cityName ,String level ,String category ,String major ,String page ,String pageSize) throws BaseInfoException, Exception;
    /**
     * 根据医院名称获取医院信息，全匹配
     * @param name
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public Hospital getHospitalByName(String name) throws BaseInfoException, Exception;
    /**
     * 根据医院名称获取医院信息，模糊查询
     * @param name
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public List<Hospital> findHospitalListByName(String name) throws BaseInfoException, Exception;
    /**
     * 根据城市id获取城市信息
     * @param cityId
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public City getCityById(String cityId) throws BaseInfoException, Exception;
    /**
     * 根据条件分页查询城市列表信息
     * @param name
     * @param region
     * @param level
     * @param page
     * @param pageSize
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public PageResults<City> findCityPage(String name, String region, String level, String isOn, String page, String pageSize) throws BaseInfoException, Exception;
    /**
     * 根据名称查询城市列表
     * @param name
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public List<City> findCityList(String name) throws BaseInfoException, Exception;
    /**
     * 根据城市名称获取城市信息，全匹配
     * @param name
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public City getCityByName(String name) throws BaseInfoException, Exception;
    /**
     * 根据职称id获取职称信息
     * @param titleId
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public Title getTitleById(String titleId) throws BaseInfoException, Exception;
    /**
     * 分页查询职称列表信息
     * @param name
     * @param page
     * @param pageSize
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public PageResults<Title> findTitlePage(String name, String page, String pageSize) throws BaseInfoException, Exception;
    /**
     * 根据职称名称获取职称信息，全匹配
     * @param name
     * @return
     * @throws BaseInfoException
     * @throws Exception
     */
    public Title getTitleByName(String name) throws BaseInfoException, Exception;
    
}
